# -*- coding = utf-8 -*-
# @Time : 2022/1/5 13:27
# @Author : 龙王赘婿_彪少
# @File : demo01.py
# @Software: PyCharm

import matplotlib
import numpy
import matplotlib.pyplot as plt


# 和matlab一模一样


class Mat:
    '画图工具matplotlib测试'
    def __init__(self):
        print(matplotlib.__version__)
        # self.fun01()
        # self.fun02()
        # self.fun03()
        # self.fun04()
        # self.fun05()
        # self.fun06()
        self.fun07()

    def fun01(self):
        # 绘制斜线
        xpoint = numpy.array([0, 6])
        ypoint = numpy.array([0, 100])
        matplotlib.pyplot.plot(xpoint, ypoint, "--g")
        matplotlib.pyplot.show()

        # 画单条线
        # plot([x], y, [fmt], *, data=None, **kwargs)
        # 画多条线
        # plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)

        # 颜色字符：'b' 蓝色，'m' 洋红色，'g' 绿色，'y' 黄色，'r' 红色，'k' 黑色，'w' 白色，'c' 青绿色，'#008000' RGB 颜色符串。多条曲线不指定颜色时，会自动选择不同颜色。
        # 线型参数：'‐' 实线，'‐‐' 破折线，'‐.' 点划线，':' 虚线。
        # 标记字符：'.' 点标记，',' 像素标记(极小点)，'o' 实心圈标记，'v' 倒三角标记，'^' 上三角标记，'>' 右三角标记，'<' 左三角标记...等等。
        # 如果我们要绘制坐标 (1, 3) 到 (8, 10) 的线，我们就需要传递两个数组 [1, 8] 和 [3, 10] 给 plot 函数：

    def fun02(self):
        xpoints = numpy.array([1, 3, 6, 8])
        ypoints = numpy.array([3, 8, 1, 10])
        # 这个地方似乎不是创建对象的方式
        plt.plot(xpoints, ypoints)
        plt.show()

    def fun03(self):
        ypoints = numpy.array([3, 8, 1, 10])
        # 若不指定x，则默认0,1,2,3...
        plt.plot(ypoints)
        plt.show()

    def fun04(self):
        # 另一个函数 arange
        x = numpy.arange(0.01, 2 * numpy.pi, 0.01)
        y = numpy.sin(x)
        z = numpy.cos(x)
        a = numpy.log(x)
        plt.plot(x, y, x, z, x, a)
        plt.show()

    def fun05(self):
        ypoints = numpy.array([1, 3, 4, 5, 8, 9, 6, 1, 3, 4, 5, 2, 4])
        # 标签与标题 似乎不支持中文 中文要去下载一个字体
        plt.title("mlgb")
        plt.xlabel("x")
        plt.ylabel("y")
        # 网格
        plt.grid()
        # 点标记
        plt.plot(ypoints, marker='*')
        plt.show()

    # 多图
    def fun06(self):
        # plot 1:
        xpoints = numpy.array([0, 6])
        ypoints = numpy.array([0, 100])

        plt.subplot(1, 2, 1)
        plt.plot(xpoints, ypoints)
        plt.title("plot 1")

        # plot 2:
        x = numpy.array([1, 2, 3, 4])
        y = numpy.array([1, 4, 9, 16])

        plt.subplot(1, 2, 2)
        plt.plot(x, y)
        plt.title("plot 2")

        plt.suptitle("subplot")
        plt.show()

    def fun07(self):
        # 在给定间隔内返回均匀
        x = numpy.arange(1, 10)  # 永远记住是左闭右开
        # x = numpy.arange(1, 10, 0.1)
        print(x)
        print(len(x))
        # 散点图 柱状图 饼图 更多见菜鸟教程


if __name__ == "__main__":
    m1 = Mat()
